package com.example.entity;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.apache.ibatis.annotations.Mapper;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 员工实体类
 */
@Data
@Schema(description = "员工实体")
public class Emp {
    @Schema(description = "员工ID", example = "1")
    private Integer id; // 员工ID
    
    @Schema(description = "用户名", example = "zhangsan")
    private String username; // 用户名
    
    @Schema(description = "密码", example = "123456")
    private String password; // 密码
    
    @Schema(description = "姓名", example = "张三")
    private String name; // 姓名
    
    @Schema(description = "性别, 1:男, 2:女", example = "1")
    private Integer gender; // 性别, 1: 男, 2: 女
    
    @Schema(description = "手机号", example = "13800138000")
    private String phone; // 手机号
    
    @Schema(description = "职位, 1:班主任, 2:讲师, 3:学工主管, 4:教研主管, 5:咨询师", example = "2")
    private Integer job; // 职位, 1 班主任, 2 讲师, 3 学工主管, 4 教研主管, 5 咨询师
    
    @Schema(description = "薪资", example = "10000")
    private Integer salary; // 薪资
    
    @Schema(description = "头像", example = "https://example.com/avatar.jpg")
    private String image; // 头像路径
    
    @Schema(description = "入职日期", example = "2023-01-01")
    private LocalDate entryDate; // 与数据库entry_date对应
    
    @Schema(description = "部门ID", example = "1")
    private Integer deptId; // 部门ID
    
    @Schema(description = "创建时间")
    private LocalDateTime createTime; // 创建时间
    
    @Schema(description = "更新时间")
    private LocalDateTime updateTime; // 更新时间
    
    // 关联属性：部门
    @Schema(description = "部门")
    private Dept dept;
    
    // 关联字段 - 部门名称
    @Schema(description = "部门名称", example = "研发部")
    private String deptName;
    
    // 关联字段 - 工作经历列表
    @Schema(description = "工作经历列表")
    private List<EmpExpr> exprList;
} 